package com.ylbh.modules.banner.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ylbh.common.pojo.activity.dto.GoodsListDTO;
import com.ylbh.common.pojo.banner.dto.BannerListDTO;
import com.ylbh.common.pojo.banner.dto.GoodsCommendAddDTO;
import com.ylbh.common.pojo.banner.dto.GoodsCommendDTO;
import com.ylbh.common.pojo.banner.dto.StartAdvertisingDTO;
import com.ylbh.common.pojo.goods.dto.GoodsClassDTO;
import com.ylbh.common.pojo.goods.vo.ActivitySelectGoodsListVO;
import com.ylbh.modules.banner.entity.AppHomeBanner;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 *
 * appBanner管理
 * @author czx
 * @date 2019-05-08 18:04:15
 */
@Mapper
@Repository
public interface AppHomeBannerMapper extends BaseMapper<AppHomeBanner> {

    /**
     * banner列表
     * @param bannerListDTO
     * @return
     */
    List<AppHomeBanner> selectBannerList(@Param(value = "bannerListDTO") BannerListDTO bannerListDTO, Page page);

    /**
     * banner详情
     * @param id
     * @return
     */
    AppHomeBanner selectBannerDetails(@Param(value = "id")Long id);

    /**
     * 修改banner
     * @param appHomeBanner
     */
    void updateBannerById(@Param(value = "appHomeBanner") AppHomeBanner appHomeBanner);

    /**
     * 新增banner
     * @param appHomeBanner
     */
    void insertBanner(@Param(value = "appHomeBanner") AppHomeBanner appHomeBanner);

    /**
     * 删除banner
     * @param list
     */
    void deleteBannerByIds(@Param(value = "list") List<String> list);

    /**
     * 修改Banner图片显示状态
     * @param id
     * @param showStatus
     */
    void updateShowStatus(Long id, Integer showStatus);

    /**
     * 专题管理列表
     * @param bannerListDTO
     * @param page
     * @return
     */
    List<AppHomeBanner> selectSpecialList(@Param(value = "bannerListDTO") BannerListDTO bannerListDTO, Page<Object> page);

    List<AppHomeBanner> selectBannerLists(@Param(value = "bannerListDTO") BannerListDTO bannerListDTO, Page<Object> page);

    /**
     * 新增启动广告
     * @param startAdvertisingDTO
     */
    void insertStartAdvertising(@Param(value = "startAdvertisingDTO") StartAdvertisingDTO startAdvertisingDTO);

    /**
     * 修改启动广告
     * @param startAdvertisingDTO
     */
    void updateStartAdvertisingById(@Param(value = "startAdvertisingDTO") StartAdvertisingDTO startAdvertisingDTO);

    /**
     * 启动广告详情
     * @param id
     * @return
     */
    StartAdvertisingDTO selectStartAdvertisingById(Long id);

    /**
     * 启动广告页列表
     * @param keywords
     * @param page
     * @return
     */
    List<StartAdvertisingDTO> selectStartAdvertisingList(String keywords, Page<Integer> page);

    /**
     * 查询出所有绑定在分类推荐上的商品id
     * @param id
     * @return
     */
    List<String> selectGoodsIdInfoByIdBannerId(Long id);

    /**
     * 删除推荐上绑定的数据
     * @param id
     */
    void deleteGoodsCommendById(Long id);

    /**
     * 修改推荐的分类信息
     * @param goodsCommendDTO
     */
    void updateGoodsCommendById(@Param(value = "goodsCommendDTO") GoodsCommendDTO goodsCommendDTO);

    /**
     * 新增推荐商品中间表信息
     * @param goodsId
     * @param id
     */
    void insertGoodsCommend(@Param(value = "goodsId") String goodsId, @Param(value = "id") Long id);

    /**
     * 商品推荐添加商品查询
     * @param goodsListDTO
     * @param ids
     * @return
     */
    List<ActivitySelectGoodsListVO> selectNotAddedGoods(@Param(value = "goodsListDTO") GoodsCommendAddDTO goodsListDTO, Page page);

    /**
     * 查询专题的id和标题
     * @return
     */
    List<GoodsClassDTO> selectSpecial();

    /**
     * 首页底部菜单icon
     * @param page
     * @return
     */
    List<AppHomeBanner> selectBottomIconList(Page<Object> page);

    /**
     * vip升级商品列表
     * @param page
     * @return
     */
    List<AppHomeBanner> selectVipUpgradeGoodsList(Page<Object> page);

    /**
     * 图片跳转分类
     * @return
     */
    List<GoodsClassDTO> selectOuterClassList();

    /**
     * 分享规则
     * @param page
     * @return
     */
    List<AppHomeBanner> selectShareRule(Page<Object> page);
}
